23

» WarCraft 3 / Не показывается юнит

Похожие вопросы:

ответ
ну попробуй так
перед созданием сбрось флаг
set a=GetUnitUIDefByIdCaching(unitid)
if a>0 then
call WMem(a+0xB8,0)
endif
после создания единицу обратно пишешь, должно сработать
ответ
Naadir, что значит сохраняется но не компилится?
можно скрины кода а также пути к карте, игре и редактору
ответ
WakVellios, По всему проблема в том, что каждый юнит содержит slk таблицу присваивающему max min dmg для юнитов, а строки max min не предусмотрены в РО, с остальными полями всё работает.
Решается созданием кастомной slk таблицей новых юнитов.
ответ
Подробнее нужно?

23

» WarCraft 3 / Скажите как убрать утечки?

Похожие вопросы:

ответ
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode

23

» WarCraft 3 / Поле зрения юнита

Похожие вопросы:

ответ
А теперь заходим в константы и правим пункт: Монстры: время возвращения охраны, Монстры: расстояние охраны.
ответ
world_editor:
Паладин стоит на месте если синий вражеский пехотинец рядом и атакует его при нажатие на нём пкм 1 раз. (надеюсь правильно понял вопрос)
Да, это помогло. Юнит перестаёт атаковать, но начинает бежать от атакующего врага. Пришлось ещё триггер сделать и в итоге вот что получилось
 PaladinAttacked
     События
         Боевая единица - Паладин 0000 <gen> Получает урон
     Условия
     Действия
         Боевая единица - Order (Паладин 0000 <gen>) to Отставить
 Trigger
     События
         Map initialization
     Условия
     Действия
         Боевая единица - Add classification of Работник или аналог to Паладин 0000 <gen>
ответ
Хм, а как насчет сначала найти кодом, есть ли вокруг цели, а потом давать абилку с приказом?

23

» WarCraft 3 / Поясните за утечки

Похожие вопросы:

ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).

23

» WarCraft 3 / Создание/помощь в Триггере

Похожие вопросы:

ответ
Создай новый триггер
событие- Боевая единица входит в нужную область (A Units enters MYREGION)
условие - Боевая единица - Мой Герой (Unittype или Unit Comparison /+ Player comparison)
действие - Победа (Игра-Victory)
Предварительно создай область MYREGION
ответ
Измени скорость игры и удлини игровой день, насколько я помню он тоже ускоряется при изменении скорости, хотя я могу ошибаться - лучше проверить
ответ
уйма времени уходит на то чтобы понять, что как работает
Де-факто нужно понимание принципов работы только в отношении тех или иных алгоритмов, внутреннее устройство игры может иметь значение в ну очень редких случаях.
ответ
система урона и переменная типа... забыл какого типа, но она может принимать значения true\false
с её помощью отслеживаем включение\выключения щита
ответ
Name Legion:
мне кажется я чтото упустил....либо так..попробовать...
либо так
если integer A то он подберет из массива области увидит кто играет и создаст в эти области работников..либо присвоить по player number...не знаю
они и так рабочие
надо тестировать
Integer A всетаки буду использовать...по солиднее выглядит он..спасибо вопрос закрыт.

23

» WarCraft 3 / Изгнание в астрал

Похожие вопросы:

ответ
делается изи тебе в константах нужно сделать 0 и давать спел с маг резистом

23

» WarCraft 3 / Что делать, и как вылечить Редактор Карт?

Похожие вопросы:

ответ
koloff, единственно верный вариант - перетащить весь импорт из карт в кампанию. Да, трудозатратно. Да, итоговый вес доставляет. Увы.
Представь длину списка файлов в импорте кампании под конец работы
Поэтому придется думать, что загружать, а что нет. По своему опыту знаю, что вычищать потом неиспользованные данные из импорта - сущий ад. Особенно если к каждой модели по 3-4 текстуры.
И да, музыка в mp3 формате тоже не дает грузится. Онли вав.
Все грузится.

23

» WarCraft 3 / Сброс кулдауна

Похожие вопросы:

ответ
Gerhop, если у игрока лишь 1 герой то можно сразу дать этот скилл
при подборе предмета разрешать его а при выпадении запрещать
тогда вроде кд будет сохранятся
если мне память не изменяет
ответ
Например, так.

23

» WarCraft 3 / Не заменяются текстуры склонов

Похожие вопросы:

ответ
Как вариант - попытаться в одной текстуре клиффов попробовать разместить сразу два визуальных решения.
Текстуры клиффов находятся в mpq архиве по адресу ReplaceableTextures\Cliff\
Текстура клиффов
A. рандумные поверхности клиффов
B. тайлинг прямых граней, верхушка клиффа
C. тайлинг прямых граней, низ клиффа
D. угловые тайлы, выбирается 1 рандумный
E. угловые тайлы, низ клиффа
F. применяютя у мостов и подъёмников
Каждому клиффсету принадлежит два файла:
Угловатые клифы ReplaceableTextures\Cliff\Cliff0.blp
Прямые клифы ReplaceableTextures\Cliff\Cliff1.blp
Вроде всё правильно написал, если не прав поправьте.
ответ
Решение: перерисовать клиф, обновить в формат blp. залить в карту.
ответ
В файле war3x.mpq есть несколько маленьких mpq для каждого тайлсета. Конкретно текстуры Короны лежат в i.mpq

23

» WarCraft 3 / Манипуляции с предметом

Похожие вопросы:

ответ
Решил проблему так: создал предметный скилл на основе "повышения здоровья" (т.к. у него нет иконки), обнулил значения бонуса и добавил сфере.
ответ
Уже была у меня такая проблема все делаеш также но ставиш значение в минус: xgm.guru/p/100/178018
ответ
если хотите ссылку вот xgm.guru/p/wc3/unliminv?postid=291866
а может не тот не помню век прошел =)

23

» WarCraft 3 / Дебаф промахов.

Похожие вопросы:

ответ
Поскольку его не пугает наличие большого влияния промахов на геймплей - скорее всего он делает рпг. Имхо в рпг всегда клево смотрятся тексттаги полученного урона, для создания которых необходимы триггеры на отлов получения урона. А отлавливаемый урон - можно и прохилить.
Для прохила(и вообще всех манипуляций с задержкой в 0.00 сек) лично я юзаю такие костыли:
Либа здесь только для доп табуляции. Я за чистый жасс + дефайны.
library ZeroTimeEvent

    globals
        constant integer ZTEArraySize = 64//Even 32 is alot, 64 is too much! Exactly what I need!
        timer Zero//Used for 0. sec uses
        integer ZTECurrent = 0
        unit array ZTEUnits[ZTEArraySize]
        integer array ZTEIntegers[ZTEArraySize]
        real array ZTEReals[ZTEArraySize]
        trigger array ZTETriggers[ZTEArraySize]
    endglobals
    
    function ZeroTimeEvent takes nothing returns nothing
            loop
                set  ZTECurrent = ZTECurrent - 1
                call TriggerExecute( ZTETriggers[ZTECurrent] )
                exitwhen ZTECurrent < 1
            endloop
    endfunction
    
    #define ZTEAddUnit(u) = {
        set  ZTEUnits[ZTECurrent] = u
    }
    
    #define ZTEAddInteger(i) = {
        set  ZTEIntegers[ZTECurrent] = i
    }
    
    #define ZTEAddReal(r) = {
        set  ZTEReals[ZTECurrent] = r
    }
    
    #define ConfirmZTE(trig) = {
        set  ZTETriggers[ZTECurrent] = trig
        set  ZTECurrent = ZTECurrent + 1
        call TimerStart( Zero, ZeroTime, false, function ZeroTimeEvent )
    }
    
    
    
endlibrary
Пример использования
#define UnitRemoveForceAttack(u) = {
    call UnitAddAbility( u, 'Abun' )
    call UnitRemoveAbility( u, 'Abun' )
         ZTEAddUnit(u)
         ConfirmZTE(CheckIfUnitHasA002)
}
Минус такой системы в необходимости создавать триггер для каждого блока кода, т.к. массивы блоков кода запрещены

23

» WarCraft 3 / Способность Техника

Принятый ответ
Похожие вопросы:

ответ
Кароче. Объясняю в чём дело.
Способность "Техника" имеет прикреплённые к ней спецэффекты шипов через одноимённое заклинание (тоже "Техника").
Почему шипы видны только на "больших героях"? - потому что у них есть особые точки крепления аттачей, маунт-справа/слева (на подобии нога-левая, рука-правая).
Как убрать? - логика подсказывает что нужно зачистить соответствующие поля в эффекте "Техника", что собственно и верно... и нет...
Дело в том что скилл "Техника" относится к тем, которые имеют ошибку с изменением графических параметров в РО. (меняешь, а оно всё равно по старому отображается - например тёмная стая, стадо ящерец).
Что же делать? - берёшь стандартную технику, смотришь её стандартный эффект. Удаляешь из стандартного эффекта всю графику (теперь техника не будет давать шипы). Копируешь стандартную технику - вот твой новый скилл который уже не будет давать шипов. Готово. Работаешь с новой копией.
ответ
Походу дело было в баганой модели спецэффекта, которая и вызывала просадку фпс.
ответ
Ну не совсем так, но в общем верно. Т.к основа спелла уже не меняется если он выучен, но изучения спелл меняется полностью...
ответ
~8gabriel8:
Вот есть вариант: xgm.guru/p/wc3/222019?postid=413030#comment28
ответ
Проблема решена, была ошибка в самом улучшении. Извиняюсь! Техника улучшает пассивки.

23

» WarCraft 3 / Заставить ИИ выбрать юнита

Похожие вопросы:

ответ
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
ответ
Триггерно создаешь юнита, Каждую секунду, в течении 6 сек, заставляешь всех вражеских юнитов вокруг в радиусе 500 атаковать его.
ответ
~8gabriel8:
Попробовал на карте дать приказ пехотинцам и стрелкам Отряд - ... Щелчок правой кнопкой мыши ... Они пошли с соблюдением боевого порядка, сначала пехотинцы, потом стрелки.

23

» WarCraft 3 / Отлов урона

Похожие вопросы:

ответ
ОП, спелы все триггерные?

Если да, то заводишь глобальную переменную bool IsSpell = false, перед нанесением урона в коде даёшь ей true, после - обратно false. В триггере, который срабатывает на получение урона, первым действием ставишь локалку булёвую, которая ==IsSpell. Вуаля, ты отслеживаешь весь урон с абилок, а что не урон с абилок, то есть урон с руки.

Сам так всегда делал, никогда не понимал пляски с бубнами и прочими орбами. Оно, конечно, проще идеологически, но по факту намного геморройнее: добавлять орб, проверять орб, удалять орб, подменять реальный орб триггерно...

Кстати, можно по такой же схеме через логические переменные указывать тип урона, например, чистый, физический (почему бы и не давать с абилок физический урон?) или магический, от этого вообще что угодно можно пилить, хоть кучу видов брони, хоть цветовые индикаторы разного типа урона.
ответ
Кастовать способности даммиком и отлавливать урон от него.
ответ
был в старом коде, есть и в новом коде, ищи по сайту "мемхак"
ответ
~8gabriel8:
Ещё можешь наносить вместо отравления иной бафф, а отравлять даммиком. По этому баффу сможешь различать урон от автоатаки и способности.
ответ
Вот типы урона "Огня преисподней":
if BlzGetEventAttackType( ) == ConvertAttackType( 0 ) and BlzGetEventDamageType( ) == ConvertDamageType( 8 ) and BlzGetEventWeaponType( ) == ConvertWeaponType( 0 ) then
Bergi_Bear, ну там же всё интуитивно понятно:
BlzGetEventAttackType( ) - возвращает тип атаки.
BlzSetEventAttackType( ) - меняет тип атаки.

23

» WarCraft 3 / Респаун Крипов

Похожие вопросы:

ответ
Вот обновленная версия на структурах, я её вроде выкладывал...
либо используйте CreateCreepOfType для создания крипов, так будет респаунить тока тех крипов которых вы создали этой функцией...
ответ
Сергей45, дело в том, что когда ты ставишь юнита на карте, то при сохранении в скрипт карты добавляется кусок, который на старте игры именно в этих координатах создаст именно этого юнита, с указанным количеством здоровья, маны, уровнем, и предметами (если есть инвентарь).
Для тебя это просто "нажал, поставил, в игре он есть".
На деле же - он создаётся отдельным куском скрипта (и это нормально).
Когда ты открываешь на юните (в редакторе) вкладку с выпадающими предметами, то там можно указать выпадающие предметы и их шанс при этом. Что происходит на самом деле? - в скрипт игры вшивается кусок, который регистрирует событие смерти этого юнита (а так же событие получения над ним контроля, если его захватят то предмет тоже выпадает). Умирая этот юнит пройдёт несколько простых проверок, и дальше под ним будут созданы предметы (из списка).
Список формируется в момент смерти юнита!
Когда юнит умирает, берётся глобальный список (общий), и в нём производится очистка. После этого в него добавляются предметы и числа (т.е. шанс). После этого особая хитрая функция выбрасывает случайное число и получает по нему один из предметов (записанных ранее в список).
Готово. Именно такова суть работы базового дропа предметов.
Дальше тебе надо используя событие смерти юнита, сделать проверку на его тип, и создать нужный предмет под ним (но это будет работать в 100% случаев). Если ты хочешь добавить к этому шанс, то можно просто дополнительно прикрутить выбрасывание случайного числа (например от 1 до 100), и если оно меньше некоего другого числа (например 40), то только тогда создаёшь предмет (это будет 40%-й шанс на дроп).
А вот если тебе надо сделать хитрее, например 100% что предмет выпадет, и из них 20% что это будет кольцо на +3, и остальные 80% что это будет кольцо на +2, тогда тебе придётся добавить ещё несколько проверок, и их число будет рости от количества этих вариантов дропа.
Если ты делаешь всё на 1.26 и у тебя есть JNGP, то ты можешь сразу использовать добавленные в GUI функции для работы со списком:
call RandomDistReset() очистка списка
call RandomDistAddItem(ID,X) добавление предмета ID с шансом X (число от 0 до 100)
set itemID = RandomDistChoose() получение случайного ID из списка, за счёт шанса
Первые два - на самом дне списка действий категории "Предмет"
Третий - указывается вместо типа предмета, при его создании (тоже есть в списке)
Если у тебя нет возможность использовать JNGP (например из-за версии патча), тогда ты можешь просто на прямую обращаться к этим функциям (если, конечно, они не изменились). Но для этого тебе придётся чуть-чуть обрести понимания в том как работает JassCS).

23

» WarCraft 3 / wurst.startmap' not found как исправить?

Похожие вопросы:

ответ
Такое может произойти если функция не объявлена публичной
public function StatsSyncAll(unit owner)
    // Ра-та-та-та-та
По умолчанию, объявления внутри пакета приватные.
P.S. в Wurst лучше придерживаться стиля Wurst. То бишь, имена функций и переменных следует начинать с маленькой буквы
public function  statsSyncAll(unit owner)
ответ
Даже если в редакторе создать молоток без бафов, и использовать его в AbilityDefinition('новый молоток', 'молоток из редактора'), то при очистке бафов, стан всё равно есть, но без эффекта.
К сожалению да, бафф это по большей части просто визуал в статусе героя. На механику мало влияет.
Не получается через UnitDefinition() сделать копию Сильваны 'Hvwd'(Хуманы, компания),
Вроде никаких проблем
Код
package Hello
import NoWurst
import UnitObjEditing
import Unit

@compiletime function createSilvanas()
	new UnitDefinition('NSlv', 'Hvwd')
	..setName("Двурукий Стреломёт")

init
	createUnit(Player(0), 'NSlv', vec2(0, 0), angle(0))
Результат
Разница между UnitDefinition и HeroDefinition в отсутствии в первой полей из второго.
Проверь, может в файле wurst_run.args, что в папке проекта, отсутствуют строки
-runcompiletimefunctions
-injectobjects
Или забыл аннотацию compiletime перед объявлением функции, в которой генерируется юнит.
ответ
Решил проблему, кириллица работает только в русской версии wc3. В любой другой, русский текст отображаться не будет совсем.
Это не решение)
Создай папку Fonts в папке с игрой и кинь туда этот шрифт.
ответ
Если у тебя есть необходимость в сотни пакетов, ты что-то явно делаешь не так.
Либо это будет вызывать ошибки, по типу всяких бесконечных компиляций и т.д.
Нет. Но если такая ошибка возникнет, это баг компилятора (если не твоя ошибка), о котором надо сообщить разработчику.
Ты можешь только упереться в ОП лимит, поскольку выполнение блоков init каждого пакета выполняется в пределах одной функции вызовом TriggerEvaluate. В остальном без ограничений.
ответ
Никак. Дизайн языка такой возможности не предусматривает.

23

» WarCraft 3 / Получить уровень бафа ауры на юните

Похожие вопросы:

ответ
У бафа нет уровня, его невозможно отследить. Но можно добавлять юниту невидимую способность со множеством уровней (например, на основе стандартной "Ауры торнадо" или "Сферы"). Эта способность, в свою очередь, будет накладывать нужный баф. А как отловить уровень способности уже сказали:
native GetUnitAbilityLevel takes unit whichUnit, integer abilcode returns integer
+
No, level of Buff!
buff == ability
function UnitHasBuffBJ takes unit whichUnit, integer buffcode returns boolean
    return (GetUnitAbilityLevel(whichUnit, buffcode) > 0)
endfunction

23

» WarCraft 3 / Складывание предметов

Похожие вопросы:

ответ
  1. тогда сделай при найме героя, чтобы все остальные блокировались для данного игрока.
  2. попробуй тогда сделать условие number of units owned by player matching the codition (matching unit is alive = true) равно 0
ответ
отлавливаем применение предмета
если цель предмета совпадает с применяемым предметом то уменьшаем количество зарядов в 2 раза и даём предмет с оставшимися зарядами
ответ
Steal nerves:
Вы так не понятно разъясняете свои мысли. Сделать можно по-разному.
ограничить складывание зарядов от двух итемов в один слот. Пример максимум зарядов до 5.
зелье 1 заряд + зелье 1 заряд = зелье 2 заряда
если у зелья больше 5 зарядов, не складывать. Будет складываться в новый слот инвентаря. Есть и этот слот забьет, то складывать в новый.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Item-type of (Item being manipulated))) == "Предмет1")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
хочу сделать чтобы заряды увеличивались от другого предмета
Два предмета складываются в один. Например "шар 1" и "шар 2" = "шар 1" с 2 зарядами.
Вам достаточно добавить блок-схему условие-1 ИЛИ условие-2
можешь подобрать гриб-1, так можно подобрать гриб-2, главное чтобы один из них сработал.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Multiple Conditions Or - Any (Conditions) are true //позволяет вставить проверку нескольких условии. Или первый тип или второй тип. 
> --(Item-type of (Item being manipulated))) == "Предмет1")
> --(Item-type of (Item being manipulated))) == "Предмет2")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Multiple Conditions Or - Any (Conditions) are true
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет2")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было

23

» WarCraft 3 / Как сделать юнита которого нельзя выбрать?

Похожие вопросы:

ответ
Грубый пример:
Событие - постройка завершена
Действие: Если тип юнита (построенное здание) = стена,
то установить переменую-точку = позиция (построенного здания),
удалить (построенное здание)
создать декорацию типа "Стена-декорация" в точке-переменной
удалить точку

Пишу с работы, редактора под рукой нет. Прошу за ошибки и неточности простить))
ответ
~8gabriel8:
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.

С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.

Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.

Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.

На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.

Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.

Нашёл твои вопросы:
В них бы и спрашивал, что непонятно. А то тебе отвечают, а ты игнорируешь, словно очень умный.
Тебе даже вариант без триггеров для четвёртого пункта сделали: xgm.guru/p/wc3/230191/comments?postid=426457#comment5

23

» WarCraft 3 / Как добавить нового героя в Dota 6.83c

Похожие вопросы:

ответ
Да я имел ввиду доп кампании сделанные по мотивам WC1-2 ) жаль конечно что 1 нету "я б сыграл" как говорится) , не могли бы вы пожалуйста скинуть ссылку на ToD? p.s. "За темным порталом" для WC3 очень понравилось прям как официальная ! успехов вам )
ToD в данный момент созданется. ВОТ ссылка.
ответ
nvc123, не понимаю сути претензий. Да, вопрос нубский (для тебя). Но тем не менее твой ответ — бессодержательный.
ответ
Это баг явно. Исправим в ближайшем патче.

23

» WarCraft 3 / Открыть карту

Похожие вопросы:

ответ
Пишет ошибку и закрывается весь редактор
Таблетку установи, у тебя редактор лицензия.
Если у тебя седьмая
Уже много лет полёт нормальный, мало какая из игр вылетает, даже неверхуд работал, а вар3 вообще летает(всм. хорошо работает).
а у тебя вылетает
у тебя скорее всего стоит русификатор триггеров
У меня стоит на одном из редакторов, не вылетает.
ответ
Способ есть.
Но для этого нужен Warcraft 3 и редактор.
Итого:
  • открываешь редактор,
  • открываешь в нем карту
  • клацаем F9 или просто Проверку карты (там иконка самая последняя в строчке, красная галочка)
  • Profit...
Внимание! Не все карты так можно открыть, некоторые защищенные и открытию в редакторе не подлежат, а если их восстановить, то они не всегда работоспособны.
ответ
ты бы названий таких не делал, а то модератор впаяет условку
для открытия обычных карт понадобится стандартный World Editor, идущий в комплекте с игрой
карты кампании нужно искать в архивах *.mpq, которые находятся в директории игры, в одной папке с приложением war3.exe, и для их открытия понадобятся программы наподобие Win mpq или War3ModelEditor со встроенным Mpq Browser
ответ
Можно, War#mapResorer в помощь, вот ссылочка
А что именно интересует, я кое какие скиллы выкладывал, у фрога там черт ногу сломит, какие то недогуи, всякие старые скиллы которые не удалены, ужос, карта открывается в редакторе по 5 мин.
ответ
Trickster, ну так будет 100р?
В карте испоганен заголовок и хешьтаблица и удалены данные об обьектах, поэтому она не открывается ничем кроме зезулы, но зезула не дает возможность редактировать файлы. Ну собственно я это дело снял, могу восстановить открываемость в редакторе..

23

» WarCraft 3 / Перенос Заданий

Принятый ответ
Похожие вопросы:

ответ
Ты не представляешь, сколько раз он был задан. Я уверен, ты сам справишься с поисками.